浏览器的同源策略

您所在的位置:网站首页 谷歌浏览器 指纹仪 浏览器的同源策略

浏览器的同源策略

2024-01-12 17:23| 来源: 网络整理| 查看: 265

警告: 这里描述的方法(使用 document.domain setter)已被弃用,因为它破坏了同源策略所提供的安全保护,并使浏览器中的源模型复杂化,导致互操作性问题和安全漏洞。

满足某些限制条件的情况下,页面是可以修改它的源。脚本可以将 document.domain 的值设置为其当前域或其当前域的父域。如果将其设置为其当前域的父域,则这个较短的父域将用于后续源检查。

例如:假设 http://store.company.com/dir/other.html 文档中的一个脚本执行以下语句:

jsdocument.domain = "company.com";

这条语句执行之后,页面将会成功地通过与 http://company.com/dir/page.html 的同源检测(假设http://company.com/dir/page.html 将其 document.domain 设置为“company.com”,以表明它希望允许这样做——更多有关信息,请参阅 document.domain)。然而,company.com 不能设置 document.domain 为 othercompany.com,因为它不是 company.com 的父域。

端口号是由浏览器另行检查的。任何对 document.domain 的赋值操作,包括 document.domain = document.domain 都会导致端口号被覆盖为 null 。因此 company.com:8080 不能仅通过设置 document.domain = "company.com" 来与 company.com 通信。必须在它们双方中都进行赋值,以确保端口号都为 null 。

该机制有一些局限性。如果启用了 document-domain (en-US) Permissions-Policy,或该文档在沙箱 下,它将抛出一个“SecurityError” DOMException,并且用这种方法改变源并不影响 Web API 使用的源检查(例如 localStorage、indexedDB、BroadcastChannel、SharedWorker)。更详尽的失败案例列表可以在 Document.domain 的错误章节找到。

备注: 使用 document.domain 来允许子域安全访问其父域时,需要在父域和子域中设置 document.domain 为相同的值。这是必要的,即使这样做只是将父域设置回其原始值。不这样做可能会导致权限错误。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3